#include <bits/stdc++.h>
using namespace std;
const int N=4e5+50;
struct vote{
    int v,f;
    bool operator <(const vote &rhs){
        return f>rhs.f;
    }
}a[N];
int n;
char s[4];
bool vis[N];
int main(void){
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%s %d",s,&a[i].f);
        if(s[0]=='1'){
            if(s[1]=='1'){
                a[i].v=3;
            }else{
                a[i].v=2;
            }
        }else{
            if(s[1]=='1'){
                a[i].v=1;
            }else{
                a[i].v=0;
            }
        }
    }
    sort(a,a+n);
    int cnt=0;
    int twoN=0;
    int oneN=0;
    int zeroN=0;
    int gg=0;
    for(int i=0;i<n;i++){
        if(a[i].v==3){
            gg++;
            cnt+=a[i].f;
            vis[i]=true;
        }else if(a[i].v==2){
            twoN++;
        }else if(a[i].v==1){
            oneN++;
        }else{
            zeroN++;
        }
    }
    //printf("%d\n",cnt);
    int num=min(twoN,oneN);
    int g=0,k=0;
    for(int i=0;i<n;i++){
        if(a[i].v==0 || a[i].v==3){
            continue;
        }else{
            if(a[i].v==1 && g<num){
                g++;
                gg++;
                cnt+=a[i].f;
                vis[i]=true;
            }else if(a[i].v==2 && k<num){
                k++;
                gg++;
                cnt+=a[i].f;
                vis[i]=true;
            }
        }
    }
    int rem=2*(n-zeroN-oneN-twoN+num)-gg;
    int t=0;
    for(int i=0;i<n;i++){
        if(!vis[i] && t<rem){
            t++;
            cnt+=a[i].f;
        }
        //printf("%d ",a[i].f);
    }
    //printf("\n");
    printf("%d\n",cnt);
    return 0;
}